<?php
/**
 * 工厂模式

 *  工厂方法模式优缺点：
 *  优势：克服了简单工厂模式违背开放-封闭的原则，保持了封装对象创建过程的优点。
 *  缺陷：当增加产品时，就得增加一个产品工厂的类，增加额外的开发量。避免不了分支判断的问题。
 *
 * This file is part of pattern.
 * Author: tangzhou
 * Date: 2016/8/26
 * Time: 11:18
 * File: Factory.php
 */

/**
 * 抽象产品
 * Interface Product
 */
interface Hanba
{
    function eat();
}

class RouSongBao implements Hanba
{
    function eat()
    {
        echo "我是肉松煲";
    }
}

class ChickenBao implements Hanba
{
    function eat()
    {
        echo "我是鸡肉煲";
    }
}

/**
 * 抽象工厂角色
 * Interface Factory
 */
interface Factory
{
    function create();
}

class RouSongFactory implements Factory
{
    function create()
    {
        return new RouSongBao();
    }
}

class ChickFactory implements Factory
{
    function create()
    {
        return new ChickenBao();
    }
}

